Apache Sqoop একটি জনপ্রিয় টুল যা RDBMS থেকে Hadoop সিস্টেমে ডেটা ইম্পোর্ট এবং এক্সপোর্ট করার জন্য ব্যবহৃত হয়। ডেটার বড় ভলিউমের স্থানান্তর করতে গেলে Delta এবং Incremental লোড টেকনিক্স অত্যন্ত গুরুত্বপূর্ণ। এই টেকনিক্সগুলি ব্যবহৃত হয় যখন আপনি নতুন ডেটা ইম্পোর্ট করতে চান, যা ইতিমধ্যে লোড করা ডেটার সাথে আপডেট বা পরিবর্তিত হয়েছে। এই পদ্ধতিগুলি ডেটা স্থানান্তরের পারফরম্যান্স উন্নত করতে এবং বড় ডেটাসেটের জন্য কার্যকরী সমাধান প্রদান করতে সহায়তা করে।
Delta Data Load
Delta Load হল একটি ডেটা লোড টেকনিক, যেখানে শুধুমাত্র নতুন বা পরিবর্তিত রেকর্ডগুলি ইম্পোর্ট করা হয়, যা পূর্বে লোড করা ডেটার সঙ্গে পার্থক্য তৈরি করে। Delta লোড ব্যবহার করা হয় যখন আপনি বিশেষ সময় পরবর্তীকালে নতুন বা আপডেট হওয়া ডেটা চান।
Delta Load-এর সুবিধা:
- পারফরম্যান্স বৃদ্ধি: কেবলমাত্র নতুন বা পরিবর্তিত ডেটা ইম্পোর্ট করার কারণে সম্পূর্ণ ডেটাসেট ইম্পোর্ট করার চেয়ে অনেক দ্রুত কাজ হয়।
- স্টোরেজ সাশ্রয়: শুধুমাত্র নতুন বা পরিবর্তিত রেকর্ডগুলি লোড করার মাধ্যমে ডিস্ক স্পেস সাশ্রয় হয়।
- ফ্রিকোয়েন্ট আপডেট: যদি ডেটাবেসে খুবই নিয়মিত আপডেট বা অ্যাডিশন হয়, তবে ডেলটা লোড সমর্থন করতে পারে।
Delta Load-এর জন্য Sqoop ব্যবহার:
ডেলটা লোড করতে, সাধারণত একটি টাইমস্ট্যাম্প বা সিকুয়েন্স নম্বর ব্যবহার করা হয়, যা একটি কলাম ট্র্যাক করে, যা ডেটা রেকর্ডের আপডেটের বা সৃষ্টির সময় বা তারিখ প্রদর্শন করে।
Sqoop কমান্ড উদাহরণ (Delta Load):
sqoop import \
--connect jdbc:mysql://localhost:3306/database_name \
--username user_name --password password \
--table target_table \
--check-column last_updated \
--last-value '2024-01-01 00:00:00' \
--target-dir /user/hadoop/new_data
এখানে:
--check-column last_updated: এটি একটি কলাম নির্ধারণ করে যা রেকর্ডের পরিবর্তনের সময় বা তারিখ ধারণ করে।--last-value '2024-01-01 00:00:00': এটি নির্দেশ করে যে শেষ ডেটা লোডের পর কোন সময়ের মধ্যে ডেটা পরিবর্তিত হয়েছে।
এই কমান্ডটি গত আপডেটের পর সমস্ত নতুন বা পরিবর্তিত ডেটা ইম্পোর্ট করবে।
Incremental Data Load
Incremental Data Load এমন একটি পদ্ধতি যা নিয়মিত সময় পরিমাণে ডেটা ইম্পোর্ট বা এক্সপোর্ট করার জন্য ব্যবহৃত হয়, যেখানে শুধুমাত্র নতুন বা পরিবর্তিত ডেটা লোড করা হয়। এটা খুবই কার্যকরী যখন ডেটাবেসে অনেক বড় ডেটাসেট থাকে এবং নিয়মিত ইম্পোর্ট করতে হয়।
Incremental লোডের ক্ষেত্রে, দুটি সাধারণ পদ্ধতি রয়েছে:
- Append Mode:
এই পদ্ধতিতে, Sqoop শুধুমাত্র নতুন রেকর্ডগুলি লোড করে, অর্থাৎ আগের লোড করা ডেটা পরিবর্তিত হয় না। এটা সাধারণত যখন ডেটাবেসে নতুন রেকর্ড যোগ করা হয় তখন ব্যবহার করা হয়। - Lastmodified Mode:
এই পদ্ধতিতে, Sqoop পরিবর্তিত বা আপডেট হওয়া রেকর্ডগুলো লোড করে, অর্থাৎ যেগুলোরlast_modifiedটাইমস্ট্যাম্প বা সিকুয়েন্স নাম্বার পরিবর্তিত হয়েছে।
Incremental Data Load-এর সুবিধা:
- ডেটা প্রক্রিয়াকরণকে দ্রুত করা: শুধুমাত্র নতুন বা পরিবর্তিত ডেটা ইম্পোর্ট করার মাধ্যমে সম্পূর্ণ ডেটাবেস ইম্পোর্ট না করে দ্রুত কাজ করা যায়।
- স্বয়ংক্রিয় আপডেট: নিয়মিত ডেটা লোড করার সময়, আপনাকে ম্যানুয়ালি ডেটা আপডেট করতে হয় না, কারণ ইনক্রিমেন্টাল লোডে নতুন এবং পরিবর্তিত ডেটা স্বয়ংক্রিয়ভাবে যোগ হয়।
Incremental Load-এর জন্য Sqoop ব্যবহার:
Append Mode এবং Lastmodified Mode এর মধ্যে যে কোনো একটি ব্যবহার করা যেতে পারে। নিচে কমান্ডের উদাহরণ দেওয়া হলো।
Append Mode উদাহরণ (Incremental Load):
sqoop import \
--connect jdbc:mysql://localhost:3306/database_name \
--username user_name --password password \
--table target_table \
--incremental append \
--check-column id \
--last-value 100 \
--target-dir /user/hadoop/new_data
এখানে:
--incremental append: নতুন রেকর্ডগুলো যোগ করার জন্য ব্যবহৃত।--check-column id: ডেটা ইম্পোর্ট করার জন্য যে কলামটি চেক করতে হবে তা নির্ধারণ করা।--last-value 100: গতবার যে রেকর্ড পর্যন্ত ডেটা ইম্পোর্ট করা হয়েছে, সেটি নির্ধারণ করে।
Lastmodified Mode উদাহরণ (Incremental Load):
sqoop import \
--connect jdbc:mysql://localhost:3306/database_name \
--username user_name --password password \
--table target_table \
--incremental lastmodified \
--check-column last_modified \
--last-value '2024-01-01 00:00:00' \
--target-dir /user/hadoop/new_data
এখানে:
--incremental lastmodified: পরিবর্তিত রেকর্ডগুলো ইম্পোর্ট করার জন্য।--check-column last_modified: সেই কলামটি নির্ধারণ করা, যা টাইমস্ট্যাম্প বা পরিবর্তনের তারিখ ধারণ করে।--last-value '2024-01-01 00:00:00': শেষ ডেটা লোডের পরবর্তী সময়ে পরিবর্তিত বা নতুন রেকর্ডগুলো ইম্পোর্ট হবে।
Delta এবং Incremental Data Load এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Delta Load | Incremental Load |
|---|---|---|
| প্রক্রিয়া | কেবল নতুন বা পরিবর্তিত ডেটা ইম্পোর্ট করা হয়। | শুধুমাত্র নতুন বা পরিবর্তিত রেকর্ডগুলি ইম্পোর্ট করা হয়। |
| কোনটি ট্র্যাক করে? | টাইমস্ট্যাম্প বা সিকুয়েন্স নম্বরের উপর ভিত্তি করে। | টাইমস্ট্যাম্প বা সিকুয়েন্স নম্বর, অথবা সুনির্দিষ্ট কলাম। |
| কখন ব্যবহার করা হয়? | নতুন বা পরিবর্তিত ডেটা লোড করতে, তবে সম্পূর্ণ ডেটাবেস নয়। | নিয়মিত ইম্পোর্ট বা এক্সপোর্টের জন্য, যেমন ডেটাবেস আপডেট। |
| উদাহরণ | last_updated কলাম এবং টাইমস্ট্যাম্প ব্যবহার। | last_modified টাইমস্ট্যাম্প ব্যবহার। |
সারাংশ
Delta এবং Incremental Data Load টেকনিক্স ব্যবহার করার মাধ্যমে, শুধুমাত্র নতুন বা পরিবর্তিত ডেটা ইম্পোর্ট করা হয়, যা ডেটা স্থানান্তরের প্রক্রিয়াকে দ্রুত, কার্যকরী এবং স্কেলেবল করে তোলে। Sqoop-এর মাধ্যমে Incremental লোডে append এবং lastmodified মোড ব্যবহৃত হয়, যা পারফরম্যান্স বৃদ্ধি করে এবং স্টোরেজ সাশ্রয়ী হয়। Delta Load তে শুধুমাত্র পরিবর্তিত রেকর্ডগুলো লোড করা হয়, যা নির্দিষ্ট সময়সীমার মধ্যে আপডেট বা নতুন ডেটা গ্রহণের জন্য ব্যবহৃত হয়।
Read more